package ufmg.maze.main;

import java.io.File;
import java.util.Scanner;

import ufmg.maze.Maze;
import ufmg.maze.aco.ColoniaFormigas;

public class Main {

	private static void readInput(Maze maze, String file) {
		Scanner input = null;
		int linhaCount = 0;
		int size = 0;
		try {
			input = new Scanner(new File(file));
			while (input.hasNextLine()) {
				String line = input.nextLine();
				String[] tokens = null;
				if (linhaCount % 2 == 0) {
					// parede
					tokens = line.split("\\+");
					maze.addLinhaParede(tokens);
					size = tokens.length - 1; // tem que remover o primeiro +
				} else {
					// corredor
					tokens = line.split("\\|");

					maze.addLinhaCorredor(tokens);

					size = 0;
					for (String token : tokens) {
						size += 1;
						size += (token.length() - 3) / 4;
					}
					size--; // retirar o primeiro |
				}
				linhaCount++;
			}
			maze.clean();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			input.close();
		}

	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String file = null;
		int tamanhoPopulacaoInicial = 1200;
		for(int i=0; i<args.length; i++)
		{
			if(args[i].equals("-i"))
				file = args[++i];
			else if(args[i].equals("-p"))
				tamanhoPopulacaoInicial = Integer.parseInt(args[++i]);
			else if(args[i].equals("-r"))
				ColoniaFormigas.N_ITERACOES = Integer.parseInt(args[++i]);
			else if(args[i].equals("-e"))
				ColoniaFormigas.TAXA_EVAPORACAO = Double.parseDouble(args[++i]);
			else if(args[i].equals("-f"))
				ColoniaFormigas.QUANT_FEROMONIO = Double.parseDouble(args[++i]);
		}

		Maze maze = new Maze();
		System.out.println("Lendo entrada...");
		readInput(maze, file);

		(new ColoniaFormigas(maze)).init(tamanhoPopulacaoInicial);
	}

}